پردازش تصاویر در VB.NET
 
Software training
آموزش نرم افزار.تكنولو‍‍‍‍‍ژي هاي جديد و ...

الگوريتم اعمال فيلتر قرمز بر روي تصوير

ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم، رنگ آبي و سبز را با 0 مقدار دهي مي كنيم، ولي به مقدار رنگ قرمز دست نمي زنيم. مقدار بدست آمده براي هر رنگ را در يك متغير (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد) قرار مي دهيم. در نهايت با استفاده از تابع SetPixel ، پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.

 

الگوريتم اعمال فيلتر سبز بر روي تصوير

       ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم، رنگ آبي و قرمز را با 0 مقدار دهي مي كنيم، ولي به مقدار رنگ سبز دست نمي زنيم. مقدار بدست آمده براي هر رنگ را در يك متغير (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد) قرار مي دهيم. در نهايت با استفاده از تابع SetPixel ، پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.

 

الگوريتم اعمال فيلتر آبي بر روي تصوير

       ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم، رنگ قرمز و سبز را با 0 مقدار دهي مي كنيم، ولي به مقدار رنگ قرمز دست نمي زنيم. مقدار بدست آمده براي هر رنگ را در يك متغير (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد) قرار مي دهيم. در نهايت با استفاده از تابع SetPixel ، پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.

 

الگوريتم اعمال روشنايي بر روي تصوير

براي استفاده از اين الگوريتم ابتدا بايد هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، به هر كدام از سه رنگ اصلي قرمز، آبي و سبز، مقدار تنظيم شده براي روشنايي را اضافه مي كنيم سپس با استفاده از دستور شرطي، معين مي كنيم كه اگر مقدار به دست آمده براي هر يك از رنگ ها از 0 كمتر بود آن را با 1 مقدار دهي كند و اگر از 255 بزرگتر بود آن را با 255 مقدار دهي كند. در نهايت با استفاده از تابع SetPixel پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.

 

الگوريتم اعمال كنتراست بر روي تصوير

        مقدار مورد نظر براي اعمال كنتراست بايد عددي بين 100 تا -100 باشد. عدد وارد شده توسط كاربر بايد در 100.0 جمع شود و سپس در 100.0 تقسيم شود و در نهايت مقدار به دست آمده را در خودش ضرب مي كنيم و در متغير Contrast قرار مي دهيم.

 

هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد اعشاري (Double ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، مقدار رنگ قرمز را در 255.0 تقسيم مي كنيم، 0.5 از آن كم مي كنيم در Contrast ضرب مي كنيم 0.5 به آن اضافه مي كنيم و در مقدار بدست آمده را در 255 ضرب مي كنيم سپس با استفاده از دستور شرطي تعيين مي كنيم كه اگر عدد بدست آمده از 0  كمتر باشد آن را با 0 مقدار دهي كند و اگر عدد از 255 بزرگتر بود آن با 255 مقدار دهي كند اين كار را با ساير متغيرهاي مربط به رنگ ها انجام مي دهيم و در نهايت با استفاده از تابع SetPixel پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.

 

الگوريتم Invert

اين الگوريتم برخلاف ظاهري مشكل، ولي به جرأت مي توان گفت كه ساده ترين الگوريتم است. براي استفاده از اين الگوريتم ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، سپس مقدار بدست آمده از تمام متغيرهاي مربوط به رنگ ها را از 255 كم مي كنيم، در نهايت با استفاده از تابع SetPixel پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.

 

تبديل تصوير به فرمت GrayScale

از اين الگوريتم براي تبديل عكس هاي رنگي به سياه و سفيد استفاده مي شود. ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)،  سپس مقدار همه متغيرها را در هم جمع مي كنيم و بر 3 تقسيم مي كنيم و در يك متغير (بعنوان مثال با نام colorGray ) از نوع عدد صحيح (Integer ) قرار مي دهيم و در نهايت با استفاده تابع SetPixel پيكسل و رنگ ايجاد شده (همان ColorGray ) را در محل اصلي قرار مي دهيم.

 

الگوريتم تشخيص لبه

هدف از تشخيص لبه، تشخيص لبه ها در تصوير مي باشد. در اين روش در تمام بخش هاي تصوير، پيكسل ها را بررسي مي كنيم و هر رنگ را با پيكسل مجاور سمت راست و پايين آن مقايسه مي كنيم. اگر نتيجه مقايسه زياد باشد در نتيجه در خروجي به رنگ سفيد و در غير اينصورت به رنگ سياه رسم مي شود.


 

به عنوان مثال اگر دو رنگ (C1=(R1,G1,B1  و (C2(R2,G2,B2 داشته باشيم اختلاف يا فاصله بين دو رنگ با فرمول زير محاسبه مي شود:

edge detection

 

استخراج رنگ از تصوير

در اين الگريتم بجاي بررسي هر پيكسل با پيكس هاي مجاورش آن را با رنگ مشخصي مقايسه مي كنيم. اين الگريتم تمامي اشياء موجود در تصوير را كه رنگ مشخصي دارند پيدا مي كند. از اين الگريتم بيشتر در رباتيك استفاده مي شود. به عنوان مثال در تصويري كه توسط دوربين ربات گرفته شده است توپ قرمز رنگ مشخص مي شود و ربات به سمت آن حركت مي كند. در اين الگريتم مقدار رنگهاي هر پيكسل با مقدار رنگهاي، رنگ انتخاب شده مقايسه مي شود. اگر نتيجه مقايسه زياد باشد در نتيجه در خروجي به رنگ سفيد و در غير اينصورت به رنگ سياه رسم مي شود.

Horizontal  flip

اين الگوريتم را مي توان با كمترين مقدار كد نويسي پياده سازي كرد. براي پياده سازي اين الگوريتم ابتدا تصوير را در يك متغير از نوع Bimap قرار مي دهيم.

Dim Image As New Bitmap(picCanvas.Image)

 

و سپس از متد RotateFlip براي اعمال Flip بر روي تصوير استفاده مي كنيم و در نهايت تصوير موجود در متغير را به كنترل Image  موجود در برنامه منتقل مي كنيم.

 

Image.RotateFlip(RotateFlipType.RotateNoneFlipX)

Vertical  flip

پياده سازي اين الگريتم مانند پياده سازي الگريتم قبلي است با اين تفاوت كه در كد نويسي مقداري تفاوت دارند.

Image.RotateFlip(RotateFlipType.RotateNoneFlipY)

 

پياده سازي الگريتم Rotate

اين الگوريتم مانند الگريتم Flip است. مي توان آن را  با كمترين مقدار كد نويسي پياده سازي كرد. براي پياده سازي اين الگوريتم ابتدا تصوير را در يك متغير از نوع Color قرار مي دهيم و سپس از متد RotateFlip براي اعمال Rotate بر روي تصوير استفاده مي كنيم و در نهايت تصوير موجود در متغير را به كنترل Image   موجود در برنامه منتقل مي كنيم.

 

Image.RotateFlip(RotateFlipType.Rotate90FlipNo)


در پروژه اي كه همراه مقاله قرار داده ام عمليات هاي متنوع و مختلف ديگري مانند: Crop، Resize، Gamma و ... قرار داده شده است.

 


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:







           
سه شنبه 29 فروردين 1391برچسب:, :: 16:54
M.A

درباره وبلاگ


به وبلاگ من خوش آمدید
آخرین مطالب
نويسندگان
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان آموزش کامل نرم افزارها به زبان فارسی و آدرس softwaretraining.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.







ورود اعضا:

نام :
وب :
پیام :
2+2=:
(Refresh)

<-PollName->

<-PollItems->

خبرنامه وب سایت:





آمار وب سایت:
 

بازدید امروز : 112
بازدید دیروز : 5
بازدید هفته : 121
بازدید ماه : 340
بازدید کل : 31995
تعداد مطالب : 51
تعداد نظرات : 2
تعداد آنلاین : 1




در اين وبلاگ
در كل اينترنت